Computer firmware is code for providing interfaces between hardware and an operating system (OS), device drivers or high-order programs such as applications. The firmware can be divided into device firmware for exclusively controlling peripheral devices and system firmware (also called platform firmware) involved in the operation of the entire system.
The system firmware is generally stored in a nonvolatile memory (NVRAM) mounted on a motherboard. BIOS is system firmware implemented in many computer systems so far to perform POST (Power On Self Test) and password processing during a period. after the power up of a computer until the start of loading an OS, provide services to access the hardware, and the like
However, since it has become difficult for the BIOS to respond to recently advanced hardware, the UEFI Forum has developed UEFI specifications as new system firmware as an alternative to legacy. The UEFI firmware incorporates a mechanism for emulating the legacy BIOS to retain compatibility. Hardware and software have been developed from the legacy BIOS in a step-by-step manner over the past years to be able to respond to the UEFI firmware. The latest version of the UEFI specification was developed in April 2011, and the hardware has been able to be for the most part supported.
In a system with the UEFI firmware mounted therein, both an UEFI-capable OS running in an UEFI native mode and a non-UEFI-compliant OS running in a legacy BIOS compatible mode can operate. Although Windows 7™ supports the UEFI native mode, some functions of the UEFI firmware such as high-speed boot and secure boot cannot be used. In Windows 8™, the full transition to the UEFI firmware is completed to enable the complete use of the functions.
In the UEFI specification, Variable Services, global variables (GV) as variables defined in the UEFI specification are stored in the nonvolatile memory. Most personal computers (PC) today record GV in a nonvolatile memory with a UEFI stored therein. In the UEFI specification, a vendor is allowed to use unique identifiers (VendorGuid and VariableName) for GV defined in the UEFI specification in order to write its own GV in the nonvolatile memory. The OS is also allowed to rewrite GV defined in the UEFI specification.